package Q4_10_Check_Subtree; import CtCILibrary.AssortedMethods; import CtCILibrary.TreeNode; public class QuestionA { public static boolean containsTree(TreeNode t1, TreeNode t2) { StringBuilder string1 = new StringBuilder(); StringBuilder string2 = new StringBuilder(); getOrderString(t1, string1); getOrderString(t2, string2); return string1.indexOf(string2.toString()) != -1; } public static void getOrderString(TreeNode node, StringBuilder sb) { if (node == null) { sb.append("X"); // Add null indicator return; } sb.append(node.data); // Add root getOrderString(node.left, sb); // Add left getOrderString(node.right, sb); // Add right } public static void main(String[] args) { // t2 is a subtree of t1 int[] array1 = {1, 2, 1, 3, 1, 1, 5}; int[] array2 = {2, 3, 1}; TreeNode t1 = AssortedMethods.createTreeFromArray(array1); TreeNode t2 = AssortedMethods.createTreeFromArray(array2); if (containsTree(t1, t2)) { System.out.println("t2 is a subtree of t1"); } else { System.out.println("t2 is not a subtree of t1"); } // t4 is not a subtree of t3 int[] array3 = {1, 2, 3}; TreeNode t3 = AssortedMethods.createTreeFromArray(array1); TreeNode t4 = AssortedMethods.createTreeFromArray(array3); if (containsTree(t3, t4)) { System.out.println("t4 is a subtree of t3"); } else { System.out.println("t4 is not a subtree of t3"); } } }